Mechanism for partial document restore

ABSTRACT

Method and apparatus for managing versions of a portion of a document on a computing system are described. Multiple versions of an object in the document are maintained on the computing system. A graphical representation of at least two versions of the object is displayed on a display to a user of the computing system. A previous version of the object is selected from the at least two versions of the object through an input device, and the object in the document is restored to the selected previous version. The object is a portion of the document less than the entirety of the document.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. application Ser. No. 13/631,969, filed Sep. 29, 2012, of the same title, the contents of which are incorporated herein by reference in their entirety for all purposes.

TECHNICAL FIELD

The described embodiments generally relate to methods and apparatuses for managing revision control for documents stored on a computing system. More particularly, the present embodiments describe reviewing multiple previous versions of a document and restoring selected portions of the document.

BACKGROUND

Managing multiple versions of a document in a single user or a multiple user environment is a desired feature that provides a coarse level of revision control. A user can retrieve an earlier version of a document in its entirety and restore the current version of the document to the previous version of the document. Structured documents can be stored with tagged objects including timestamps that can prove valuable in searching for previous versions of documents.

Frequently, a user can seek to retrieve only a portion of a document. Partial document restoration can provide an efficient method by which objects can be searched and retrieved to modify or add the previous version of an object to a current version of a document. Particularly, when multiple users modify an individual document, no single previous version can correspond to a version that a user can seek to restore the entire document. Rather only a portion of the document can be modified by the user (while another user can modify a separate portion of the document), and the user can seek to retrieve a version for only one portion of a document rather than the previous version of the document in its entirety. Network (cloud) based storage of documents have increased the ease of access to retrieve, edit and update documents by multiple users. Some applications can also allow simultaneous editing of documents by multiple users, and a method for partial document restoration can improve a user's experience by allowing editing on separate sections of documents without a requirement to “lock out” individual sections among users. Thus, there exists a need for a method to permit version control of documents with a graphical user interface to display and retrieve individual portions of a document that are less than a document in its entirety.

SUMMARY OF THE DESCRIBED EMBODIMENTS

In one embodiment, a method of managing versions of a portion of a document on a computing system is described. The method includes at least the following steps. In a first step, a computing system maintains multiple versions of an object in the document. A graphical representation of at least two versions of the object is displayed on a display. A selection of a previous version of the object selected from the at least two versions of the object displayed is received through an input device. The object in the document is restored to the selected previous version. The object is a portion of the document that is less than the entirety of the document. In an embodiment, the computing system is a remote server connected through the internet to a second computing system, and the display and the input device are connected to the second computing system.

In another embodiment, an apparatus for managing versions of a document is described. The apparatus includes at least a storage module, an output module, an input module and a processor. The storage module is configured to maintain multiple versions of an object in the document. The output module is configured to display a graphical representation of at least two versions of the object. The input module is configured to receive a selection of a previous version of the object selected from the at least two versions of the object. The processor is configured to restore the object in the document to the selected previous version. The object is a portion of the document less than the entirety of the document.

In a further embodiment, a computer program product encoded in a non-transitory computer readable medium for managing versions of a portion of a document on a computing system is described. The computer program product includes the following computer program code. Computer program code for maintaining multiple versions of an object in the document on the computing system. Computer program code for displaying a graphical representation of at least two versions of the object on a display. Computer program code for receiving a selection of a previous version of the object selected from the at least two versions of the object through an input device. Computer program code for restoring the object in the document to the selected previous version. The object is a portion of the document less than the entirety of the document.

BRIEF DESCRIPTION OF THE DRAWINGS

The described embodiments and the advantages thereof may best be understood by reference to the following description taken in conjunction with the accompanying drawings.

FIG. 1 illustrates a network of computing devices that can generate, process, exchange and display documents through an internet connection.

FIG. 2 illustrates elements of the network server and a computing device.

FIG. 3 illustrates multiple revisions of a local document or a remote document.

FIG. 4 is an exemplary representation of detailed thumbnails of multiple revisions of a document that can include a selection overlay.

FIG. 5 illustrates one embodiment of a graphical display displaying two versions of a document.

FIG. 6 illustrates a graphical display after selecting an object of a document to recover to a current version of the document.

FIG. 7 illustrates the graphical display after selecting to revert a portion of the document to a previous version.

FIG. 8 illustrates another embodiment of a graphical display for managing partial document restoration.

FIG. 9 illustrates yet another embodiment of a graphical display for managing partial document restoration.

FIG. 10 illustrates a graphical display 1000 enabling a side-by-side comparison of different revisions of a document.

FIG. 11 illustrates a graphical display reflecting a current state of documents, after a revert all action has been selected.

FIG. 12 is a graphical display that illustrates reversion of at least one object to a current document.

FIG. 13 is a flow chart of method steps for restoring at least one object in a document in accordance with one embodiment of the specification.

DETAILED DESCRIPTION OF SELECTED EMBODIMENTS

In the following description, numerous specific details are set forth to provide a thorough understanding of the concepts underlying the described embodiments. It will be apparent, however, to one skilled in the art that the described embodiments may be practiced without some or all of these specific details. In other instances, well known process steps have not been described in detail in order to avoid unnecessarily obscuring the underlying concepts.

The examples and embodiments provided below describe various methods and apparatuses for managing versions of a portion of a page/document processed on a computing system and displayed to a user. (The terms “document” and “page” are used interchangeably in this patent application to indicate a file or portion thereof that can be generated, manipulated, retrieved and displayed by a computing device.) In some embodiments, the page/document and versions of the objects contained therein can be stored locally and displayed on a client device (i.e. a local computing system). In other embodiments, the page/document and versions of the objects contained therein can be stored and processed on a remote server and displayed on a computing device of a user connected to the remote server through a network, such as the internet (i.e. both a local computing system and a remote computing system). Objects in a document can include a page or a slide or an element on a page or slide, e.g. a paragraph, an image, a chart, a drawing and a text box. Objects can include formatting.

Partial document restoration allows a user to recover only a portion of a document, such as one or more objects in the document from previously stored versions of the document. The one or more objects can be added to a current version of the document or can replace objects in the current version of the document. A graphical representation of multiple previous versions of a document can be presented to a user on a display. The multiple previous versions of the document can be resident in local storage device or can be located across a network (including the internet) in a remote storage device. Thumbnails of the different previous versions of the document can be presented to the user with sufficient detail to indicate objects within the previous versions of the document. Detail can be presented hierarchically with the user able to drill down to finer levels of objects within a document. For example, the document can contain multiple pages, each page containing multiple objects. The user can replace or add one or more pages/slides from a previous version of the document to the current version of the document. The user can also replace or add one or more objects contained within pages/slides from the previous version of the document to the current version of the document, thus modifying only a portion of page/slide. Selection overlays on pages/slides presented to the user can indicate status for a version, e.g. current, modified and added. Overlays can also indicate possible restoration actions, e.g. recover and revert. Objects from previous versions of the document can be recovered when they are not present in the current version of the document and can be restored to an earlier version when a later version is present in the current version of the document.

Revision control systems usually allow a user to retrieve entire documents rather than view select portions of multiple previous versions of a document. Restoration in a revision control system typically requires restoring the entire document rather than only a portion thereof. When multiple people modify documents that are kept on a common shared storage device, a user can prefer to modify only a portion of the document, e.g. a set of slides the user is working on, while leaving the other slides unmodified. Partial document restore can provide a better mechanism for document modification in cloud (network storage) based solutions and offer finer control of a document when simultaneous collaborative editing by multiple users is enabled. Partial document restore can avoid having to lock sections of a document. A revision history of versions of the document including objects contained therein can be a “rubbish bin” of previously discarded versions that partial document restore can provide an efficient method for the user to search and retrieve content therefrom.

FIG. 1 illustrates a network 100 of computing devices that can generate, process, exchange and display documents through an internet connection. Representative computing devices include a computer 102, a tablet 106, a smartphone 108 and a laptop computer 110. Each of the computing devices illustrated can include an integrated and/or connected display on which documents can be reproduced. One of the computing devices, e.g. the computer 102, can generate a local document 114 that can be processed on the computer 102 and can be displayed on an integrated display of the computer 102 and also on a connected secondary display 104.

Local document 114 can be uploaded from computer 102 to network server 112 and downloaded from network server 112 to another computing device across a (World Wide Web) internet connection. At network server 112, stored remote document 116 can correspond exactly to source document 114 or can be a variant of source document 114 that includes changes that can be applied by users that retrieve and modify remote document 116 through an internet application. For example, a user of the computer 102 can initially create source document 114, upload source (local) document 114 to network server 112 and then manipulate source document 114 at network server 112 through a “web based” application thereby creating a new remote document 116. In some embodiments, remote document 116 can be modified by multiple users simultaneously. Network server 112 can maintain multiple versions of remote document 116, so that previous versions of remote document 116 can be viewed and searched. A portion of a previous version of remote document 116 can be restored to a current version of remote document 116 by a user without affecting other portions of the current version of the remote document 116. Similarly, a history of versions of local document 114 can be resident on a storage device connected to the computer 102 and can be viewed and/or searched to restore a portion of local document 114 from a previous version to a current version of local document 114.

FIG. 2 illustrates elements of the network server 112 and computing device 202. Network server 112 can include processor 212, remote storage 214 and memory 218. Processor 212 can be a central processing unit that can include one or more processing cores. In other embodiments, processor 212 can be a microprocessor, embedded processor, processor emulator or the like. Memory 218 can be random access memory, read only memory, non-volatile memory or any other suitable memory technology. Processor 212 can be configured to read, write and execute program instructions stored in remote storage 214 or memory 218. Remote storage 214 can store programs and data, typically in amounts much greater than can be stored in memory 218. For example, remote storage 214 can consist of one or more hard disk drives, solid state drives or any other suitable storage element. Remote document 116 can be stored in remote storage 214 or memory 218.

Computing device 202 can include processor 228, local storage 226 and memory 224. Processor 228, local storage 226 and memory 224 can be configured similarly to processor 212, remote storage 214 and memory 218 as described above. Local document 114 can be stored in local storage 226. Additionally, computing device 202 can include input module 230 and output module 232. Input module 230 can be configured to accept user input to direct actions of computing device 202. Input module 230 can include a keyboard, pointing device (mouse), touch pad, touch screen or the like. Output module 232 can be configured to produce output for the user. For example, output module 232 can include a screen or projector capable of displaying one or more images.

Network server 112 can be coupled to computing device 202 through a network connection such as through an internet connection. In one embodiment, network server 112 can include network interface 216 and computing device 202 can include network interface 222. These network interfaces can each be configured to couple network server 112 and computing device 202 to a network, thereby coupling network server 112 to computing device 202.

A document, such as local document 114 can be created or edited on computing device 202. Local document 114 can then be stored in network server 112 as remote document 116. Other versions of remote document 116 can be stored in network server 112. In one embodiment, a version can include one or more independent documents that can be used to create or update a current version of a document.

FIG. 3 illustrates multiple revisions 300 of a local document 114 or a remote document 116. Local document 114 or remote document 116 can be a text document, a word processing file, a graphic document, a drawing file, a web page or any other document that can include associated data. In one embodiment, the document (local document 114 or remote document 116) can include one or more objects. By way of example, a document can be a collection of slides that make up a visual presentation authored through a software program, or a document can be a collection of pages, or a collection of partial pages that can make up a word processing document.

As shown in FIG. 3, a document can include one or more revisions. Each revision can represent a discrete and independent version of the document. In the example of FIG. 3, local document 114 or remote document 116 can include five different revisions. Revision 5 (310) is the most recent revision, while revision 1 (302) can be the earliest revision. Subsequent revisions to revision 1 (302) are shown here as revision 2 (304), revision 3 (306) and revision 4 (308). In accordance with one embodiment of the specification, a revision (such a revision 5 (310)) can be a complete version of a document, however each document can include one or more objects.

FIG. 4 is an exemplary representation of detailed thumbnails 400 of multiple revisions of a document that can include a selection overlay. Thumbnails can be graphic representations of portions of a particular revision. Some thumbnails can include a portion of the document or object to visually cue the user as to the contents represented by the thumbnail. In this example, FIG. 4 shows in more detail the contents of each revision of a document of FIG. 3 (in particular, remote document 116). Each document revision can include one or more objects, and each object can be individually acted upon through recovery or by reverting to an earlier version.

Current revision of remote document 116 is revision 5 (310) and can include six objects: object C 402, object D 403, object B 404, object E 405, object F 406 and object G 407. In some embodiments, information related to ordering of the objects can be preserved with each revision. The selection overlay of objects 402- 407, drawn in the lower portion of representative boxes 402-407, in revision 5 indicates “current” meaning that the object, as shown, is included in the current version stored on network server 112.

Revision 4 (308) of remote document 116 includes only three objects: object C 412, object D 413 and object B 414. Each object in Revision 4 (308) can be an earlier version of the corresponding object in Revision 5 (310). Thus object C 412 can be an earlier version of object C 402 and so forth. The selection overlay included with object C 412 shows “revert” meaning that the user can choose to revert from object C 402 to back to object C 412 in remote document 116. Notably, entire remote document 116 need not be reverted back to an earlier version, but rather one or more objects included in remote document 116 can be selected by the user for revision.

Revision 3 (306) can include four objects: object A 422, object C 423, object D 424 and object B 425. Any revision can also include one or more objects no longer included in the current revision, as illustrated with Revision 3 (306). Object A 422 is shown in revision 3 (306), but is not included in the subsequent revisions. Since object A 422 was removed from later revisions, the related selection overlay for object A 422 can be shown as “recover”. That is, object A 422 can be recovered, in its entirety, and incorporated into the current version of the document.

Revision 2 (304) can include three objects: object A 432, object C 433 and object B 434. In a similar manner as described above, one or more of the objects 432- 434 can be incorporated into a current revision of remote document 116. Again, since object A 432 was removed from the current version of the document, object A 432 can be recovered as indicated by its associated selection overlay. Similarly object C 433 or object B 434 can be incorporated into the current revision of the document by reverting to the version of the object in this version as shown by their associated selection overlay. Revision 1 (310) is the earliest version in this example. Revision 1 (310) includes three objects: object A 442, object B 443 and object C 444. Each object can include a selection overlay as described above.

In one embodiment, each version of each object in a revision can be independent of every other version. Returning to the example in FIG. 4, object A 422 can be independent of object A 432 in revision 2 (304) and object A 442 in revision 3 (302) can be independent of both object A 432 and object A 422. When choosing to create a new version or update a current version of a document, the user need not be limited to restoring the document to a particular revision, but rather can pick and choose which objects to include. For example, the user may desire to create a new version of the document that includes object A 422 from revision 3 (306) and object B 434 from revision 2 (304).

Although described from the point of view of network server 112, in some embodiments, a working document can be stored in network server 112, computing device 202 or a mixture of both. For example, a document can have one or more objects stored in network server 112 and one or more objects stored in computing device 202. Objects can be any portion of a document, such as a slide from a visual presentation or a page from a word processing document.

FIG. 5 illustrates one embodiment of a graphical display 500 displaying two versions of a document. By way of example, graphical display 500 can include a current version 310 and a previous version 302 of a document and a selection region. FIG. 5 helps to illustrate one or more actions that a user can take to revert or recover one or more portions of a document. While specific graphical display elements may be discussed, other embodiments can include different display elements while still maintaining one or more concepts described herein.

Graphical display 500 can include a saved versions region 502, a current version region 504 and a selection region 506. Extending the example shown in FIG. 4, revision 5 (310) of remote document 116 can be the current version and is displayed in current version region 504. Selection region 506 can be used to select a particular previous revision. In this example, revision 1 (302) has been selected by the user and is shown in saved version region 502. In one embodiment, the user can select different revisions by moving slider 508 with a cursor within selection region 506. In another embodiment, the user can select a selection arrow 510 with a cursor to bring other revisions into saved versions region 502.

Through graphical display 500, the user can select to restore or revert one or more objects from previous saved versions and incorporate those objects into a current version. In one embodiment, thumbnail images of the objects can be shown on the graphical display 500 to assist the user in selecting the one or more objects. In one embodiment, the thumbnail images can be size reduced images of associated objects.

Graphical display 500 can be displayed though computing device 202 while documents and their related objects can be stored in the network server 112. Network 100 can advantageously allow two or more users to access a document stored in network server 112 without the need for complicated check in/check out procedures. For example, two or more computing devices can be included with network 100. Additionally, the two or more users can access the document at approximately the same time. In one embodiment, graphical display 500 can be rendered on a display with dedicated software that can run on one or more clients. In another embodiment, graphical display 500 can be displayed through a web browser.

FIG. 6 illustrates a graphical display 600 after selecting an object of a document (the object being less than an entire document, for example) to recover to a current version of the document. Thus, a current version of a document can be partially restored. The graphical display 600 can include saved versions region 502 and a selection region 506 as described in FIG. 5. Referring back to FIG. 5, if a user wanted to recover object A 442, in one embodiment the user could select object A 442 in saved versions region 502. After selecting object A 442, the selection overlay can become highlighted and indicate “recover” and object A 442 can be added to the current version of the document. This shown in FIG. 6 where the current working document is now displayed in unsaved version region 604. Object A 442, which can be shown as a thumbnail in unsaved version region 604, can include a selection overlay of “added” to indicate the status of the object with respect to the current version of the document.

FIG. 7 illustrates graphical display 700 after selecting to revert a portion of the document to a previous version. Display 700 can include three regions as before: saved versions region 502, selection region 506 and unsaved version region 604. In this example, the user can choose to replace a newer version of object B 404 with an older version of object B 443. The selection overlay for object B 443 can become highlighted and can show “revert” (in saved version region 502) indicating that the user can revert object B 443 to an earlier version. In one embodiment the user can select object B 443 in the saved versions region 502 and can drag it to unsaved version region 604. When object B 443 appears in unsaved version region 604, the related thumbnail can change to show object B 443 in unsaved version region 604 with a selection overlay changed to revised.

FIG. 8 illustrates another embodiment of a graphical display 800 for managing partial document restoration. In some cases, a thumbnail image may be sufficient for a user to determine which portions (i.e., objects) of a document to recover or revert; however, at other times more detail may be desired. Graphical display 800 illustrates one approach that can provide more detailed information to the user. As described above in FIGS. 6 and 7, graphical display 800 can include saved versions region 502 and selection region 506. In one embodiment, there can be two regions for displaying current version information. A first region can be current version summary region 804 and a second region can be current version region 802. Current version summary region 804 can include images, scaled images, thumbnails or icons that represent each object within a document. Current version region 802 can display detailed information related to a selected object in current version summary region 804. Returning to our example of FIG. 7, current document is revision 5 302, thus the six objects that make up the current version of the document can be shown in current version summary region 804. The user can select a particular object from the current document (in this case, slide B 404 can be selected in current version summary region 804). In response to this selection, slide B 404 can be shown in current slide region 802. Graphical display 800 can advantageously show details included in the selected object. In this example, slide B 404 can be selected and objects included in slide B 404 such as title block 806, text block 808 and graphics block 810 can be shown.

The user can select older versions of the current document with slider 508 and the portions of the revisions (objects) that can be reverted or recovered can appear in saved versions region 502. This action is described in conjunction with FIG. 9 below.

FIG. 9 illustrates yet another embodiment of a graphical display 900 for managing partial document restoration. Graphical display 900 can include saved versions region 502, selection region 506 and revised slide region 908. In one embodiment, the user can select different revisions of the current document with slider 508 in the selection region 506. Continuing the example started in FIG. 8, the user can select slide B 443 from Revision 1 (302) shown in the saved version region 502. The selection overlay portion of slide B 443 can indicate “revert” meaning that slide B 443 can replace slide B 404 in the current document. In this example, slide B 443 is now shown in revised slide region 908 and the symbol (icon) for slide B can be highlighted in unsaved version summary region 906.

In one embodiment, regions of some graphical displays can be context sensitive. For example, the user can view graphical display 800 and review older revisions of a current document. However, as soon as the user selects at least one object from the older revision from saved versions region 502, then current slide region 802 can transition to revised slide region 908, showing the incorporation of a selected object from an older revision, into the current revision.

While a document can include one or more objects, the objects can be independent from each other and the granularity of the objects do not necessarily have to be at a page level as discussed thus far. Rather, objects can be smaller and more finely grained than a page. FIG. 10 illustrates a graphical display 1000 enabling a side-by-side comparison of different revisions of a document. In one embodiment, the right portion of graphical display 1000 can show a current version of the document and the left portion of graphical display 1000 can show a selected previous version. Current version region 1010 can display one or more objects included in the current version (in this example, Revision 5 (310)). Slider 1020 in current selection region 1015 can allow the user to scroll through the different slides included in the current version. As the user selects an object (in this case slide B 404) in current version region 1010, a more detailed view of the selected object is shown in detailed current version view 1040.

Similarly, the user can scroll through objects included in a saved revision with slider 1025 in saved version selection region 1030. Slider 1025 can affect the display of objects from an older version in saved version region 1030. If the user selects an object, a detailed view of the object can appear in detailed saved version region 1035. In this example, the user has selected slide B 443 in saved version region 1030 and a detailed view of slide B 443 is shown in detailed saved version selection region 1035. Note that the selection overlay can indicate a possible partial restoration action. For example, the selection overlay for object B 443 can indicate “revert indicating a possible action and illustrating a relationship between object B 443 and the current document version. Included in graphical display 1000 is a revert all action key 1050. The revert all action key 1050 can be used to revert all objects shown in detail saved version region 1035.

FIG. 11 illustrates a graphical display 1100 reflecting a current state of documents, after a revert all action has been selected. FIG. 11 continues the example began in FIG. 10 above. Graphical display 1100 can again display two versions side by side. On the left side, an older version of the selected document can be shown. In saved version region 1030 one or more objects from a document included in a previous version or revision can be displayed. In this example, Slide B 443 of previous revision 1 (302) has been selected and is shown in detailed saved version view 1035. As revert all 1050 is selected, all objects currently in the detailed saved version view 1035 can be selected and used to revert the corresponding objects in the current version.

On the right side of graphical display 1100, in detailed unsaved version view 1110 objects in a current version of a document are displayed. Since revert all 1050 was selected, the current document can be modified to include all objects shown in detailed saved version view 1035. In this example, slide B 443 can replace slide B 404 in the current version. As shown in detailed unsaved version view 1110, slide B 443 includes title block 902 and text block 904, matching the objects shown in detailed saved version view 1035. Unsaved version region 1115 can be updated to reflect the revised slide B 443; in particular the selection overlay associated with slide B 443 can be changed to “revised” to reflect the operation.

Individual objects can be selected and restored or reverted in accordance with one embodiment of the specification. In one embodiment, such a restoration or reversion action can be directed by a user through a graphical interface. FIG. 12 is a graphical display 1200 that illustrates reversion of at least one object to a current document.

Graphical display 1200 can include saved version region 1030 and unsaved version region 1115. In this example, revision 1 of a saved document is shown, and in particular slide A 442, slide B 443 and slide C 444 are displayed in saved version region 1030. Other slides can be displayed by selecting and moving a slider in saved version selection region 1030. Slide B 443 can be selected, as shown by grayed region in the thumbnail of slide 443 in saved version region 1030. In detailed saved version view 1035, the user can select one or more objects to include in a current slide. By way of example, slide B 443 is shown to include title block 902 and text block 904. Either one or both of these objects can be selected for inclusion in a current document.

Graphical display 1200 can also include detailed unsaved version view 1110. In this view, a current version of one or more objects within a document can be shown. Continuing the example, text block 904 shown in detailed saved version view 1035 can be selected for inclusion into a page shown in detailed unsaved version view 1110. In one embodiment, a selected object can be “dragged” from the saved version detailed view 1035 window to the unsaved version detailed view 1110 window. The user can advantageously drill down into objects included in a revision and selectively restore one or more objects. Hierarchical relationships of objects to other objects can be presented to the user.

Graphical display 1200 can also include detailed unsaved version view 1110. In this view, a current version of one or more objects within a document can be shown. Continuing the example, text block 904 shown in detailed saved version view 1035 can be selected for inclusion into a page shown in detailed unsaved version view 1110. In one embodiment, a selected object can be “dragged” from the saved version detailed view 1035 window to the unsaved version detailed view 1110 window. The user can advantageously drill down into objects included in a revision and selectively restore one or more objects. Hierarchical relationships of objects to other objects can be presented to the user.

The various aspects, embodiments, implementations or features of the described embodiments can be used separately or in any combination. Various aspects of the described embodiments can be implemented by software, hardware or a combination of hardware and software.

The foregoing description, for purposes of explanation, used specific nomenclature to provide a thorough understanding of the described embodiments. However, it will be apparent to one skilled in the art that the specific details are not required in order to practice the described embodiments. Thus, the foregoing descriptions of the specific embodiments described herein are presented for purposes of illustration and description. They are not target to be exhaustive or to limit the embodiments to the precise forms disclosed. It will be apparent to one of ordinary skill in the art that many modifications and variations are possible in view of the above teachings.

The advantages of the embodiments described are numerous. Different aspects, embodiments or implementations can yield one or more of the following advantages. Many features and advantages of the present embodiments are apparent from the written description and, thus, it is intended by the appended claims to cover all such features and advantages of the invention. Further, since numerous modifications and changes will readily occur to those skilled in the art, the embodiments should not be limited to the exact construction and operation as illustrated and described. Hence, all suitable modifications and equivalents can be resorted to as falling within the scope of the invention. 

1. A method for managing different versions of a document, the method comprising, at a computing device: accessing a prior version of the document and a current version of the document, wherein each of the prior and current versions of the document include one or more document objects that represent portions of at least one of the prior or current versions of the document; receiving a first selection of a first document object among the one or more document objects included in the prior version of the document; receiving a second selection of a second document object among the one or more document objects included in the current version of the document; and forming a revised version of the document that includes the first and second document objects.
 2. The method of claim 1, further comprising: saving the revised version of the document; and displaying the revised version of the document.
 3. The method of claim 1, wherein the one or more document objects is an image, a chart, a text box, formatting of the document, a page of the document, or a slide of the document.
 4. The method of claim 1, wherein the revised version of the document includes at least one additional document object that is different from the first and second document objects.
 5. The method of claim 1, wherein the current version of the document includes an updated version of the first document object that is included in the prior version of the document.
 6. The method of claim 5, wherein the first document object included in the prior version of the document is an earlier version of the first document object, and the method further comprises: reverting the updated version of the first document object to the earlier version of the first document object in conjunction with forming the revised version of the document.
 7. The method of claim 1, wherein the prior version of the document includes an earlier version of the second document object that is included in the current version of the document.
 8. A system for managing different versions of a document, comprising: at least one processor; and at least one memory storing instructions that, when executed by the at least one processor, cause the system to: access a prior version of the document and a current version of the document, wherein each of the prior and current versions of the document include one or more document objects that represent portions of at least one of the prior or current versions of the document; receive a first selection of a first document object among the one or more document objects included in the prior version of the document; receive a second selection of a second document object among the one or more document objects included in the current version of the document; and form a revised version of the document that includes the first and second document objects.
 9. The system of claim 8, wherein the at least one processor further causes the system to: save the revised version of the document; and display the revised version of the document.
 10. The system of claim 8, wherein the one or more document objects is an image, a chart, a text box, formatting of the document, a page of the document, or a slide of the document.
 11. The system of claim 8, wherein the revised version of the document includes at least one additional document object that is different from the first and second document objects.
 12. The system of claim 8, wherein the current version of the document includes an updated version of the first document object that is included in the prior version of the document.
 13. The system of claim 12, wherein the first document object included in the prior version of the document is an earlier version of the first document object, and the at least one processor further causes the system to: revert the updated version of the first document object to the earlier version of the first document object in conjunction with forming the revised version of the document.
 14. The system of claim 8, wherein the prior version of the document includes an earlier version of the second document object that is included in the current version of the document.
 15. At least one non-transitory computer readable storage medium storing instructions that, when executed by at least one processor included in a computing device, cause the computing device to: access a prior version of a document and a current version of the document, wherein each of the prior and current versions of the document include one or more document objects that represent portions of at least one of the prior or current versions of the document; receive a first selection of a first document object among the one or more document objects included in the prior version of the document; receive a second selection of a second document object among the one or more document objects included in the current version of the document; and form a revised version of the document that includes the first and second document objects.
 16. The at least one non-transitory computer readable storage medium of claim 15, wherein the at least one processor further causes the computing device to: save the revised version of the document; and display the revised version of the document.
 17. The at least one non-transitory computer readable storage medium of claim 15, wherein the one or more document objects is an image, a chart, a text box, formatting of the document, a page of the document, or a slide of the document.
 18. The at least one non-transitory computer readable storage medium of claim 15, wherein the revised version of the document includes at least one additional document object that is different from the first and second document objects.
 19. The at least one non-transitory computer readable storage medium of claim 15, wherein the current version of the document includes an updated version of the first document object that is included in the prior version of the document.
 20. The at least one non-transitory computer readable storage medium of claim 19, wherein the first document object included in the prior version of the document is an earlier version of the first document object, and the at least one processor further causes the computing device to: revert the updated version of the first document object to the earlier version of the first document object in conjunction with forming the revised version of the document. 